import LayerModelSimple from '../LayerModel/LayerModelSimple'
import { GeoView } from '../type/GeoType'

/**
 * @ClassName MapUtil
 * @Description 地图工具
 * @Author xuyizhuo
 * @Date 2023/11/16 22:14
 */
export default abstract class MapUtil<T> {
    protected realMap: T // 地图实例，比如创建出来的地图对象，Cesium的Viewer
    /**
     * 初始化地图工具
     * @param {T} realMap 实例化的地图对象
     */
    constructor(realMap: T) {
        if (!realMap) {
            throw new Error('开发错误，地图实例不能为空。对象实例：' + this.constructor.name)
        }
        this.realMap = realMap
    }

    /**
     * 加载地图服务
     * @returns {}
     */
    abstract addService(): LayerModelSimple<T>

    /**
     * 获取地图视角
     * @returns {GeoView}
     */
    abstract getMapView(): GeoView

    /**
     * 飞行到视角
     * @param {GeoView} geoView 视角信息
     * @returns {MapUtil}
     */
    abstract flyToView(geoView: GeoView): MapUtil<T>
}
